package com.my_app.newarchitecture;

import androidx.annotation.NonNull;

import com.facebook.react.bridge.Callback;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.ReadableMap;
import java.util.concurrent.TimeUnit;

public class RnRemoteApiModule extends ReactContextBaseJavaModule {

    public RnRemoteApiModule(ReactApplicationContext reactContext) {
        super(reactContext);
    }

    @NonNull
    @Override
    public String getName() {
        // 对外暴露的模块的名称,在js中调用时使用`NativeModules.RemoteApi`
        return "RemoteApi";
    }

    /**
     * 供js调用的方法,通过`NativeModules.RemoteApi.login` 调用
     * @param data 登录信息
     * @param loginResultFn 结果回到函数
     */
    @ReactMethod
    public void login(ReadableMap data, Callback loginResultFn) {
        String username = data.getString("username");
        String password = data.getString("password");

        new Thread(() -> {
            try {
                TimeUnit.SECONDS.sleep(5);
                if (!"admin".equals(username)) {
                    loginResultFn.invoke(false, "用户不存在");
                    return;
                }
                loginResultFn.invoke(true, "登录成功");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }).start();
    }
}
